import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';

export namespace CmtBaseCommunityApi {
  /** 社区信息信息 */
  export interface BaseCommunity {
    id: number; // 社区ID
    code: string; // 社区编码
    name?: string; // 社区名称
    province: string; // 省份
    city: string; // 城市
    district: string; // 区县
    street: string; // 街道
    address: string; // 详细地址
    contactPerson: string; // 联系人
    contactPhone: string; // 联系电话
    logo: string; // 社区logo
    introduction: string; // 社区简介
    sort: number; // 排序
    status: number; // 状态：0停用 1启用
    remark: string; // 备注
  }
}

/** 查询社区信息分页 */
export function getBaseCommunityPage(params: PageParam) {
  return requestClient.get<PageResult<CmtBaseCommunityApi.BaseCommunity>>(
    '/cmt/base-community/page',
    { params },
  );
}

/** 查询社区信息详情 */
export function getBaseCommunity(id: number) {
  return requestClient.get<CmtBaseCommunityApi.BaseCommunity>(
    `/cmt/base-community/get?id=${id}`,
  );
}

/** 新增社区信息 */
export function createBaseCommunity(data: CmtBaseCommunityApi.BaseCommunity) {
  return requestClient.post('/cmt/base-community/create', data);
}

/** 修改社区信息 */
export function updateBaseCommunity(data: CmtBaseCommunityApi.BaseCommunity) {
  return requestClient.put('/cmt/base-community/update', data);
}

/** 删除社区信息 */
export function deleteBaseCommunity(id: number) {
  return requestClient.delete(`/cmt/base-community/delete?id=${id}`);
}

/** 批量删除社区信息 */
export function deleteBaseCommunityList(ids: number[]) {
  return requestClient.delete(
    `/cmt/base-community/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出社区信息 */
export function exportBaseCommunity(params: any) {
  return requestClient.download('/cmt/base-community/export-excel', { params });
}

/** 获取社区选项列表(用于下拉选择) */
export function getBaseCommunityOptions() {
  return requestClient.get<PageResult<CmtBaseCommunityApi.BaseCommunity>>(
    '/cmt/base-community/page',
    { params: { pageNo: -1, pageSize: 10 } },
  );
}
